﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using Thread = System.Threading.Tasks;
using Microsoft.Practices.Unity;
using Infrastucture;
using Infrastucture.Collections;
using TimeSplicerModule.Factories;
using TimeSplicerModule.DomainModels;
using TimeSplicerModule.Security;
using TimeSplicerModule.ViewModels;

namespace TimeSplicerModule.Services
{
    public partial class ProjectService : IProjectService
    {
        private readonly IUnityContainer _container;
        private ISession _session;
        private readonly IProjectFactory _projectFactory;
        private readonly ICategoryService _categoryService;
        private readonly ICategoryFactory _categoryFactory;
        private readonly IPriorityFactory _priorityFactory;
        private readonly IStatusFactory _statusFactory;
        private readonly IUserService _userService;
        private readonly IUserFactory _userFactory;
        private readonly IProjectRoleFactory _projectRoleFactory;
        private readonly IProjectUserFactory _projectUserFactory;
        private readonly ITaskFactory _taskFactory;
        private readonly ITimestampFactory _timestampFactory;

        public ProjectService(IUnityContainer container, IProjectFactory projectFactory, ICategoryService categoryService, ICategoryFactory categoryFactory, 
            IPriorityFactory priorityFactory, IStatusFactory statusFactory, IUserService userService, IUserFactory userFactory, IProjectRoleFactory projectRoleFactory, IProjectUserFactory projectUserFactory,
            ITaskFactory taskFactory, ITimestampFactory timestampFactory)
        {
            _container = container;
            _projectFactory = projectFactory;
            _categoryService = categoryService;
            _categoryFactory = categoryFactory;
            _priorityFactory = priorityFactory;
            _statusFactory = statusFactory;
            _userService = userService;
            _userFactory = userFactory;
            _projectRoleFactory = projectRoleFactory;
            _projectUserFactory = projectUserFactory;
            _taskFactory = taskFactory;
            _timestampFactory = timestampFactory;
        }
    }
}
